package com.michael.doubanonline.component;

import android.content.Context;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;

/**
 * 具有点击效果的ImageView
 * 
 * @author Michael
 * */
public class ClickEffectImageView extends ImageView
{

	/** 背景色 */
	private int BACKGROUND_COLOR = 0x22000000;

	public ClickEffectImageView(Context context)
	{
		super(context);
		init();
	}

	public ClickEffectImageView(Context context, AttributeSet attrs)
	{
		super(context, attrs);
		init();
	}

	public ClickEffectImageView(Context context, AttributeSet attrs,
			int defStyle)
	{
		super(context, attrs, defStyle);
		init();
	}

	/**
	 * 设置控件被选中时候的背景色
	 * 
	 * */
	public void setBackgroundSelectedColor(int backgroundColor)
	{
		this.BACKGROUND_COLOR = backgroundColor;
	}

	private void init()
	{
		this.setScaleType(ScaleType.CENTER_CROP);

		this.setClickable(true);
		// 图片点击效果
		this.setOnTouchListener(new OnTouchListener() {

			@Override
			public boolean onTouch(View v, MotionEvent event)
			{

				ImageView view = (ImageView) v;
				Drawable drawable = view.getDrawable();
				if (null != drawable)
				{
					switch (event.getAction())
					{
						case MotionEvent.ACTION_DOWN:
						{

							// 覆盖在图片上方的是一个黑色的透明的效果

							drawable.setColorFilter(BACKGROUND_COLOR,
									PorterDuff.Mode.SRC_ATOP);

							break;
						}
						case MotionEvent.ACTION_UP:
						case MotionEvent.ACTION_CANCEL:
						{
							// 移除点击效果
							drawable.clearColorFilter();
							break;
						}
					}
					view.invalidate();
				}

				return false;
			}
		});
	}

}
